home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 004 / telltime.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-24  |  2.8 KB  |  128 lines

  1. 100  '   ****  TELLTIME  ****            110 '   ********************
  2. 200  '   ***    Setup     ***
  3. 210  '
  4. 220  DEFINT A-Z:DEFSNG P
  5. 230  KEY OFF:SCREEN 1,0,0,0:COLOR 0,1
  6. 240  PI=3.14159
  7. 250  RANDOMIZE VAL(MID$(TIME$,7))
  8. 260  '
  9. 270  '  *** Randomly selects time to draw ***
  10. 280  '
  11. 290  HR=RND*12 MOD 12+1
  12. 300  MIN=(HR+RND*11 MOD 11)MOD 12+1
  13. 310  '
  14. 320  '  *** Draw graphics ***
  15. 330  '
  16. 340  CLS
  17. 350  CIRCLE (230,100),2,3
  18. 360  CIRCLE (230,100),80,1
  19. 370  H=(15-HR)MOD 12
  20. 380  HANGLE!=H*-2*PI/12+(MIN+12*(MIN>6))*PI/72
  21. 390  IF HANGLE!>0 THEN HANGLE!=HANGLE!-2*PI
  22. 400  CIRCLE (230,100),50,1,HANGLE!+0.02,HANGLE!-0.02
  23. 410  M=(15-MIN)MOD 12
  24. 420  MANGLE!=M*-2*PI/12
  25. 430  CIRCLE (230,100),70,2,MANGLE!+0.02+2*PI*(M=0),MANGLE!-0.02
  26. 440  '
  27. 450  '  *** Print title of program and numbers on face ***
  28. 460  '
  29. 470  LOCATE 2,17:PRINT "TELLTIME"
  30. 480  LOCATE 4,29:PRINT "12"
  31. 490  LOCATE 5,24:PRINT "11":LOCATE 5,35:PRINT "1"
  32. 500  LOCATE 9,19:PRINT "10":LOCATE 9,39:PRINT "2"
  33. 510  LOCATE 13,19:PRINT "9":LOCATE 13,40:PRINT "3"
  34. 520  LOCATE 17,20:PRINT "8":LOCATE 17,39:PRINT "4"
  35. 530  LOCATE 21,24:PRINT "7":LOCATE 21,35:PRINT "5"
  36. 540  LOCATE 22,30:PRINT "6"
  37. 550  '
  38. 560  '   *** Randomly arranges the time choices ***
  39. 570  '
  40. 580  C=RND*3 MOD 3+1
  41. 590  CH(C)=HR
  42. 600  CM(C)=MIN
  43. 610  D=(C+RND*2 MOD 2)MOD 3+1
  44. 620  CH(D)=MIN
  45. 630  CM(D)=HR
  46. 640  E=6-C-D
  47. 650  CH(E)=HR
  48. 660  CM(E)=12-MIN
  49. 670  IF CM(E) MOD 6=0 THEN CM(E)=CM(E)+6
  50. 680  '
  51. 690  '   *** Print three possible answers ***
  52. 700  '
  53. 710  LOCATE 6,1:PRINT "What time is it ?"
  54. 720  FOR J=1 TO 3
  55. 730  LOCATE J*4+6,1
  56. 740  PRINT "("CHR$(64+J)")";
  57. 750  GOSUB 1270
  58. 760  NEXT
  59. 770  LOCATE 24,4:PRINT "Hit Key A, B, OR C.(X TO STOP)";
  60. 780  RESP$=INKEY$:IF RESP$="" THEN 790 ELSE 800
  61. 790  FOR A=1 TO 300:NEXT:SOUND 18000,0.03:GOTO 780
  62. 800  LOCATE 24,1:PRINT SPC(39);
  63. 810  ANS=(ASC(RESP$) OR 32)-96
  64. 820  IF ANS = 24 THEN 1390
  65. 830  IF ANS>0 AND ANS<4 THEN 950
  66. 840  '
  67. 850  '   *** Unacceptable input rejected ***
  68. 860  '
  69. 870  LOCATE 24,1:PRINT "   A, B, OR C, PLEASE";
  70. 880  FOR J=1 TO 6
  71. 890  SOUND 50*(J MOD 2+1),5
  72. 900  NEXT
  73. 910  GOTO 770
  74. 920  '
  75. 930  '   *** Accptable input, draw eyes and mouth ***
  76. 940  '
  77. 950  CIRCLE (200,85),20,1-(ANS<>C),3*PI/8,5*PI/8
  78. 960  CIRCLE (260,85),20,1-(ANS<>C),3*PI/8,5*PI/8
  79. 970  IF ANS=C THEN 1120
  80. 980  '
  81. 990  '   *** Wrong answer routine ***
  82. 1000  '
  83. 1010  SOUND 40,40
  84. 1020  CIRCLE (230,200),80,1,(3*PI/8),(5*PI/8)
  85. 1030  LOCATE 23,1:PRINT SPC(6)CHR$(ANS+64);" IS WRONG"
  86. 1040  PRINT "THE CORRECT ANSWER IS ";CHR$(64+C);
  87. 1050  FOR J=1 TO 4000
  88. 1060  NEXT
  89. 1070  NUMWRONG=NUMWRONG+1
  90. 1080  GOTO 290
  91. 1090  '
  92. 1100  '   ***Right answer routine ***
  93. 1110  '
  94. 1120  LOCATE 24,1
  95. 1130  J=0
  96. 1140  FLG=0
  97. 1150  PRINT "CORRECT!!!!";
  98. 1160  CIRCLE (230,100),50,2,(10*PI/8),(14*PI/8)
  99. 1170  FOR J=1000 TO 4000 STEP 80
  100. 1180  SOUND J,0.04
  101. 1190  NEXT
  102. 1200  FOR J=1 TO 2000
  103. 1210  NEXT
  104. 1220  NUMRIGHT=NUMRIGHT+1
  105. 1230  GOTO 290
  106. 1240  '
  107. 1250      *** TIME PRINTING SUBROUTINE ***
  108. 1260  '
  109. 1270  IF CM(J)=12 THEN 1340
  110. 1280  IF CM(J)<7 THEN CM5(J)=CM(J):CONNECT$="AFTER" ELSE CM5(J)=12-CM(J):CONNECT$     ="to"
  111. 1290  CM5$=STR$(CM5(J)*5)
  112. 1300  PRINT RIGHT$(CM5$,LEN(CM5$)+FLG);" MINUTES ";
  113. 1310  IF NOT FLG THEN PRINT:PRINT SPC(5);
  114. 1320  PRINT CONNECT$;CH(J);
  115. 1330  GOTO 1350
  116. 1340  PRINT CH(J);"O'CLOCK ";      '2
  117. 1350  RETURN
  118. 1360  '
  119. 1370      *** ENDING PROGRAM ***
  120. 1380  '
  121. 1390  IF NUMRIGHT<NUMWRONG THEN 1410
  122. 1400  LOCATE 23,1:PRINT "Very good,you answered":GOTO 1420
  123. 1410  LOCATE 23,1:PRINT "Too bad,you answered"
  124. 1420  PRINT NUMRIGHT;"right and";NUMWRONG;"wrong.";
  125. 1430  LOCATE 1,1
  126. 1440  END
  127. 2000  _     5
  128.